package bpce.object;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class AgentesConhecidos implements Serializable {
	
	private static final long serialVersionUID = 5839398407312946445L;
	private List<String> listaAgentes;
	private Map<String, Integer> mapaSeqAlteracao;

	public AgentesConhecidos() {
		listaAgentes = new ArrayList<String>();
		mapaSeqAlteracao = new HashMap<String, Integer>(); 
	}

	public void addAgente(String nomeAgente) {
		if (! this.listaAgentes.contains(nomeAgente)){
			this.listaAgentes.add(nomeAgente);
			this.mapaSeqAlteracao.put(nomeAgente, 0);
		}
	}

	public void incrementaAlteracao(String nomeAgente) {
		int alteracao;
		
		alteracao = getNextSeqAlteracao(nomeAgente);
		this.mapaSeqAlteracao.put(nomeAgente, alteracao);
	}
	
	public int getNextSeqAlteracao(String nomeAgente){
		int next;
		
		if (this.listaAgentes.contains(nomeAgente)){		
			next = this.mapaSeqAlteracao.get(nomeAgente);
			next++;
		}
		else
			next = 1;
		
		return next;
	}

	public List<String> getAgentesConhecidos() {		
		return this.listaAgentes;
	}

	public void mergeAgentes(List<String> listaAgentesConhecidos) {
		listaAgentesConhecidos.removeAll(this.listaAgentes);
		if (listaAgentesConhecidos.size() > 0){
			this.listaAgentes.addAll(listaAgentesConhecidos);
		}
	}
}
